---
title: "VAMP Motion Planning System - Complete Architecture"
---
graph TB
    %% User Interface Layer
    subgraph "User Application Layer"
        A[User Application] --> B["YAML Configuration<br/>(panda_demo.yaml)"]
        A --> C["Programmatic API<br/>(Direct C++ calls)"]
        B --> YL[YamlConfigLoader]
        C --> VU[VampUtils]
    end
    
    %% Unified Interface Layer
    subgraph "Unified Interface Layer"
        YL --> ER["executeMotionPlanning()<br/>(Registry-based execution)"]
        VU --> ER
        ER --> RR[RobotRegistry::getInstance]
    end
    
    %% Planning Facade Layer
    subgraph "Planning Facade Layer"
        RR --> VOP["VampOMPLPlanner&lt;Robot&gt;<br/>(Facade Pattern)"]
        VOP --> OPC["OMPLPlanningContext&lt;Robot&gt;<br/>(Adapter Pattern)"]
        VOP --> RC["RobotConfig&lt;Robot&gt;<br/>(Dependency Injection)"]
        VOP --> EF["EnvironmentFactory<br/>(Strategy Pattern)"]
    end
    
    %% OMPL Integration Layer
    subgraph "OMPL Integration Layer"
        OPC --> SI["ompl::base::SpaceInformation<br/>(OMPL Core)"]
        OPC --> PD["ompl::base::ProblemDefinition<br/>(OMPL Core)"]
        OPC --> PR["PlannerRegistry<br/>(Singleton Registry)"]
        
        SI --> VSV["VampStateValidator&lt;Robot&gt;<br/>(SIMD Bridge)"]
        SI --> VMV["VampMotionValidator&lt;Robot&gt;<br/>(SIMD Bridge)"]
        
        PR --> OP1["RRT-Connect<br/>(Built-in)"]
        PR --> OP2["BIT*<br/>(Built-in)"]
        PR --> OP3["PRM<br/>(Built-in)"]
        PR --> OPN["Custom Planners<br/>(Extension Point)"]
        
        PR --> PM["OMPL ParamSet<br/>(Parameter Management)"]
    end
    
    %% VAMP Performance Core
    subgraph "VAMP Performance Core"
        VSV --> CC["Configuration Conversion<br/>(AOS → SOA)"]
        VMV --> CC
        CC --> TLB["Function-local Static Buffer Pool<br/>(Zero-allocation)"]
        TLB --> VE["VectorizedEnvironment<br/>(SIMD-optimized)"]
        
        VE --> SC["SIMD Collision Detection<br/>(8x parallel processing)"]
        SC --> SPHERE["Sphere Collision<br/>(vectorized)"]
        SC --> CUBOID["Cuboid Collision<br/>(vectorized)"]
        SC --> CAPSULE["Capsule Collision<br/>(vectorized)"]
        SC --> CLOUD["Pointcloud CAPT<br/>(vectorized)"]
    end
    
    %% Robot Type System
    subgraph "Robot Type System"
        RR --> RT1["VAMP::Panda<br/>(7-DOF, 10 spheres)"]
        RR --> RT2["VAMP::UR5<br/>(6-DOF, 8 spheres)"]
        RR --> RT3["VAMP::Fetch<br/>(8-DOF, 12 spheres)"]
        RR --> RTC["Custom Robots<br/>(User-defined)"]
        
        RT1 --> FKCC1["Vectorized Forward Kinematics<br/>+ Collision Checking"]
        RT2 --> FKCC2["Vectorized Forward Kinematics<br/>+ Collision Checking"]
        RT3 --> FKCC3["Vectorized Forward Kinematics<br/>+ Collision Checking"]
        RTC --> FKCCC["Custom FKCC Implementation<br/>(Extension Point)"]
    end
    
    %% Benchmarking System
    subgraph "Benchmarking System"
        VOP --> VBM["VampBenchmarkManager&lt;Robot&gt;<br/>(OMPL-compliant)"]
        VBM --> OB["ompl::tools::Benchmark<br/>(Standard OMPL)"]
        OB --> BL["Benchmark Log Files<br/>(.log format)"]
        BL --> OBS["ompl_benchmark_statistics.py<br/>(Standard analysis)"]
        OBS --> PA["PlannerArena.org<br/>(Visualization)"]
    end
    
    %% Performance Features
    subgraph "Performance Features"
        SIMD_FEAT["SIMD Features:<br/>• 8x parallel processing<br/>• Cache-optimized memory<br/>• Zero-copy conversions<br/>• Function-local static buffers"]
    end
    
    %% Extension Points
    subgraph "Extension Points"
        EXT_ROBOT["Robot Extension:<br/>• Custom robot types<br/>• VAMP interface compliance<br/>• Auto-registration macro"]
        EXT_PLAN["Planner Extension:<br/>• OMPL planner inheritance<br/>• Runtime registration<br/>• Parameter configuration"]
        EXT_ENV["Environment Extension:<br/>• Custom obstacle types<br/>• Factory pattern<br/>• Vectorized collision"]
    end
    
    %% Style definitions
    classDef userLayer fill:#e1f5fe,stroke:#01579b,stroke-width:2px
    classDef facadeLayer fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    classDef omplLayer fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
    classDef vampLayer fill:#fff3e0,stroke:#e65100,stroke-width:2px
    classDef robotLayer fill:#fce4ec,stroke:#880e4f,stroke-width:2px
    classDef benchLayer fill:#f1f8e9,stroke:#33691e,stroke-width:2px
    classDef perfLayer fill:#fff8e1,stroke:#ff6f00,stroke-width:2px
    classDef extLayer fill:#f9fbe7,stroke:#827717,stroke-width:2px
    
    %% Apply styles
    class A,B,C,YL,VU userLayer
    class ER,RR,VOP,OPC,RC,EF facadeLayer
    class SI,PD,PR,OP1,OP2,OP3,OPN,PM omplLayer
    class VSV,VMV,CC,TLB,VE,SC,SPHERE,CUBOID,CAPSULE,CLOUD vampLayer
    class RT1,RT2,RT3,RTC,FKCC1,FKCC2,FKCC3,FKCCC robotLayer
    class VBM,OB,BL,OBS,PA benchLayer
    class SIMD_FEAT perfLayer
    class EXT_ROBOT,EXT_PLAN,EXT_ENV extLayer
